.calendar {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    grid-template-rows: repeat(6, 1fr);
    gap: 2px;
}

.day {
    border: 1px solid #ccc;
    padding: 10px;
    text-align: center;
    font-size: 14px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.weekday {
    font-weight: bold;
    text-align: center;
    font-size: 16px;
    padding: 10px 0;
}

.previous-month-day {
    color: gray;
}

.today {
    background-color: #409EFF;
    color: white;
}

.punch-card-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
}

.has-punch-card .punch-card-dot {
    background-color: green;
}

.day:not(.has-punch-card) .punch-card-dot {
    background-color: red;
}